package com.yanqu.road.server.manager.douluodalu.impl;

import com.yanqu.road.entity.activity.douluodalu.DouLuoDaLuUserEvent;
import com.yanqu.road.entity.activity.douluodalu.config.DouLuoDaLuEventInfo;
import com.yanqu.road.entity.activity.douluodalu.enums.eDouLuoDaLuBuffType;
import com.yanqu.road.server.manager.douluodalu.CrossDouLuoDaLuContext;
import com.yanqu.road.server.manager.douluodalu.DouLuoDaLuEventResult;
import com.yanqu.road.server.manager.douluodalu.DouLuoEventHandleResult;
import com.yanqu.road.server.protocol.GameErrorCode;

/**
 * buff事件
 */
public class DouLuoDaLuBuffEventAction extends DouLuoDaLuBaseEventAction {

    public DouLuoDaLuBuffEventAction(CrossDouLuoDaLuContext context, DouLuoDaLuEventInfo eventInfo) {
        super(context, eventInfo);
    }


    @Override
    DouLuoDaLuEventResult init0() {
        DouLuoDaLuEventResult eventResult = new DouLuoDaLuEventResult();
        DouLuoDaLuUserEvent event = newDouLuoDaLuUserEvent();
        context.getUserData().setEvent(event);

        eventResult.setEventId(eventInfo.getEventId());
        eventResult.setUserEvent(event);
        return eventResult;
    }

    @Override
    DouLuoEventHandleResult handle0(int action, byte[] params) {
        DouLuoEventHandleResult handleResult = new  DouLuoEventHandleResult();
        handleResult.setEventId(eventInfo.getEventId());
        handleResult.setUserEvent(context.getUserData().getEvent());
        //buff
        int buffId;
        if(eventInfo.getRewards().contains(",")){
            buffId = Integer.valueOf(eventInfo.getRewards().split(",")[0]);
        }else {
            buffId = Integer.valueOf(eventInfo.getRewards());
        }

        eDouLuoDaLuBuffType buffType = eDouLuoDaLuBuffType.getBuffType(buffId);
        if(buffType == null){
            handleResult.setRet(GameErrorCode.E_DOU_LUO_DA_LU_CONFIG_NOT_EXIST);
            return handleResult;
        }

        handleScore(handleResult);

        //没有体力
        //int addEnergy = context.getActivity().getConfig().getXianCaoBuffEnergy(buffType);
        int addEnergy = 0;
        int addTimes = context.getActivity().getConfig().getXianCaoBuffTimes(buffType);

        synchronized (context.getUserData()){
            //体力直接生效
            if(addEnergy > 0){
                context.getActivity().refreshUserEnergy(context.getUserData(), false);
                context.getUserData().setEnergy(context.getUserData().getEnergy() + addEnergy);
            }else {
                context.getUserData().addBuff(buffId, addTimes);
            }
        }
        context.getUserData().setEvent(new DouLuoDaLuUserEvent());
        handleResult.setRewards(buffId + "=1");

        if(eventInfo.isShowLog()) {
            context.getActivity().addEventNotice(context.getUserData(), eventInfo, 0, handleResult.getRewards(), "", null, null, 0, null);
        }
        return handleResult;
    }

}
